package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"time"
)

type UpdateContentRequest struct {
	Id      int    `json:"id"`
	Content string `json:"content"`
}

type Response struct {
	Code      int         `json:"code"`
	Message   string      `json:"message"`
	Data      interface{} `json:"data"`
	Timestamp string      `json:"timestamp"`
}

func main() {
	fmt.Println("测试 PUT /api/v1/content 接口...")

	// 测试数据
	req := UpdateContentRequest{
		Id:      7, // 使用存在的ID
		Content: "# 学校概况\n\n这是测试更新的内容，时间: " + time.Now().Format("2006-01-02 15:04:05"),
	}

	// 转换为JSON
	jsonData, err := json.Marshal(req)
	if err != nil {
		fmt.Printf("JSON序列化失败: %v\n", err)
		return
	}

	fmt.Printf("发送请求数据: %s\n", string(jsonData))

	// 发送PUT请求
	resp, err := http.NewRequest("PUT", "http://localhost:8080/api/v1/content", bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Printf("创建请求失败: %v\n", err)
		return
	}

	resp.Header.Set("Content-Type", "application/json")

	client := &http.Client{Timeout: 10 * time.Second}
	response, err := client.Do(resp)
	if err != nil {
		fmt.Printf("发送请求失败: %v\n", err)
		return
	}
	defer response.Body.Close()

	// 读取响应
	body, err := io.ReadAll(response.Body)
	if err != nil {
		fmt.Printf("读取响应失败: %v\n", err)
		return
	}

	fmt.Printf("响应状态码: %d\n", response.StatusCode)
	fmt.Printf("响应内容: %s\n", string(body))

	// 解析响应
	var apiResp Response
	err = json.Unmarshal(body, &apiResp)
	if err != nil {
		fmt.Printf("解析响应失败: %v\n", err)
		return
	}

	if apiResp.Code == 200 {
		fmt.Println("✅ 更新成功!")
	} else {
		fmt.Printf("❌ 更新失败: %s\n", apiResp.Message)
	}
}